`
https://leetcode.cn/problems/two-sum/
`

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function (nums, target) {
  // 左右指针
  let left = 0, right = nums.length - 1
  // 对数组里的每个元素记录自己原本的索引
  nums = nums.map((el, idx) => [el, idx])
  // 排序数组
  nums.sort((a, b) => a[0] - b[0])

  // 从两端往中间遍历
  while (nums[left][0] + nums[right][0] !== target) {
    // 和太大缩小右边
    if (nums[left][0] + nums[right][0] > target) right--
    // 和太小增大左边
    else left++
  }

  // 返回答案对应的原本的索引
  return [nums[left][1], nums[right][1]]
};